md5() Function
אבל אני עדיין לא מבין מה לעשות עם זה בדיוק
כל פעם שמשתמש נכנס אני עושה md5() על הPOST.
ואז אני מכניס את זה מומר למסד..
ואז איך אני בדיוק ממיר את זה בחזרה לרגיל..?
אלא אם כן אני משתמש בקידוד הזה כל הזמן ומשווה סיסמאות מקודדות..
ובכלל אם אפשר להמיר את זה בחזרה אז מה ההבדל אם יפרצו לי למסד וימירו את הסיסמאות..??
10 תשובות
זהו שאי אפשר להמיר את זה בחזרה.
פשוט שרוצים להתחבר צריך להצפין את הסיסמה שהמשתמש הכניס ולהשוות למסד.
ההבדל הוא שאתה לא עושה MD5 על סיסמא ..
אתה עושה MD5 ומצרף לסיסמא מחזורת שרק אתה יודע..
אז שיפרצו לך שיקחו את הסיסמאות הן לא יהיו שוות כלום כי אי אפשר לעשות לשחזר אותם...
אז שמישהו עושה לוגין תשווה את הסיסמא אחרי הוספת המחרוזת והMD5 לDB...
יום טוב
לא ממירים את זה בחזרה.
כתבתי לך את זה בשאלה הקודמת:
"היא הופכת את מה שאתה מכניס לה למחרוזת תווים, חסרת משמעות, בעל אורך קבוע לכל קלט ושאינה ניתנת להפיכה (לפחות לא בצורה מעשית)."
אבל זה לא הגיוני שאי אפשר להמיר בחזרה..
ישנו תהליך קבוע שהוא מעביר על המחרוזת כי עובדה שmd5() על X תמיד יהיה שווה לmd5() על X
בכל מקרה מה אני ייעשה בשכחתי סיסמא..??
אני חייב את המקורית
אפשר להמיר בחזרה, תראה את מה שרשמתי בסוגריים, זה קשה מאוד מבחינה מעשית.
תקרא את זה.
וב'שכחתי סיסמה' פשוט תשלח הודעה למייל של המשתמש עם קישור ייחודי, כזה שאי אפשר לנחש.
כשנכנסים לאותו קישור אתה נותן להם לבחור סיסמה חדשה.
$username = $_POST['username'];
$password = md5(sha1($_POST['password']));
if ( isset( $_POST['login'] ) ) {
// User has posted the login form: attempt to log the user in
////////////
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT * FROM user WHERE username='" . mysql_real_escape_string($username) . "'";
foreach ($conn->query($sql) as $row)
$conn = null;
if($row['username'] == $username && md5($row['password']) == $password){
// Login successful: Create a session and redirect to the admin homepage
$_SESSION['username'] = $row['username'];
@Shareed2k
1. לא עושים דברים כאלה, לא משלבים הצפנות.
2. את ההצפנה עדיף לעשות בשאילתה עצמה.